//===-- EducationalNotes.def - Diagnostic Documentation Content -*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file associates diagnostics with relevant educational notes which
// explain important concepts.
//
//===----------------------------------------------------------------------===//

#ifndef EDUCATIONAL_NOTES
#  error Must define EDUCATIONAL_NOTES
#endif

// EDUCATIONAL_NOTES(DIAG_ID, EDUCATIONAL_NOTE_FILENAMES...)

EDUCATIONAL_NOTES(unsupported_existential_type,
                  "associated-type-requirements.md")

EDUCATIONAL_NOTES(cannot_pass_type_to_non_ephemeral, "temporary-pointers.md")
EDUCATIONAL_NOTES(cannot_pass_type_to_non_ephemeral_warning,
                  "temporary-pointers.md")
EDUCATIONAL_NOTES(cannot_use_inout_non_ephemeral,
                  "temporary-pointers.md")
EDUCATIONAL_NOTES(cannot_use_inout_non_ephemeral_warning,
                  "temporary-pointers.md")
EDUCATIONAL_NOTES(cannot_construct_dangling_pointer, "temporary-pointers.md")
EDUCATIONAL_NOTES(cannot_construct_dangling_pointer_warning,
                  "temporary-pointers.md")



EDUCATIONAL_NOTES(non_nominal_no_initializers, "nominal-types.md")
EDUCATIONAL_NOTES(non_nominal_extension, "nominal-types.md")
EDUCATIONAL_NOTES(associated_type_witness_conform_impossible,
                  "nominal-types.md")

EDUCATIONAL_NOTES(cannot_infer_closure_result_type,
                  "complex-closure-inference.md")

EDUCATIONAL_NOTES(invalid_dynamic_callable_type,
                  "dynamic-callable-requirements.md")
EDUCATIONAL_NOTES(missing_dynamic_callable_kwargs_method,
                  "dynamic-callable-requirements.md")

EDUCATIONAL_NOTES(property_wrapper_no_value_property,
                  "property-wrapper-requirements.md")
EDUCATIONAL_NOTES(property_wrapper_wrong_initial_value_init,
                  "property-wrapper-requirements.md")
EDUCATIONAL_NOTES(property_wrapper_failable_init,
                  "property-wrapper-requirements.md")
EDUCATIONAL_NOTES(property_wrapper_type_requirement_not_accessible,
                  "property-wrapper-requirements.md")

EDUCATIONAL_NOTES(opaque_type_var_no_init, "opaque-type-inference.md")
EDUCATIONAL_NOTES(opaque_type_no_underlying_type_candidates,
                  "opaque-type-inference.md")
EDUCATIONAL_NOTES(opaque_type_mismatched_underlying_type_candidates,
                  "opaque-type-inference.md")
EDUCATIONAL_NOTES(opaque_type_self_referential_underlying_type,
                  "opaque-type-inference.md")
EDUCATIONAL_NOTES(opaque_type_var_no_underlying_type,
                  "opaque-type-inference.md")


EDUCATIONAL_NOTES(missing_append_interpolation,
                  "string-interpolation-conformance.md")
EDUCATIONAL_NOTES(append_interpolation_static,
                  "string-interpolation-conformance.md")
EDUCATIONAL_NOTES(append_interpolation_void_or_discardable,
                  "string-interpolation-conformance.md")
EDUCATIONAL_NOTES(type_cannot_conform, "protocol-type-non-conformance.md")

EDUCATIONAL_NOTES(unlabeled_trailing_closure_deprecated,
                  "trailing-closure-matching.md")

EDUCATIONAL_NOTES(result_builder_static_buildblock,
                  "result-builder-methods.md")
EDUCATIONAL_NOTES(result_builder_missing_limited_availability,
                  "result-builder-methods.md")
EDUCATIONAL_NOTES(result_builder_missing_build_optional,
                  "result-builder-methods.md")
EDUCATIONAL_NOTES(result_builder_missing_build_either,
                  "result-builder-methods.md")
EDUCATIONAL_NOTES(result_builder_missing_build_array,
                  "result-builder-methods.md")

#undef EDUCATIONAL_NOTES
